Modern computer systems often comprise a plurality of processors coupled to one another and to a shared resource by a bus. The shared resource may comprise, for example, a database containing information required by the processors in the execution of various software modules running on the processors. The database can be arranged as a lookup database service that is made available to all of the processors of the system.
By way of example, each processor may receive input data that includes identification information relating to an entity and the software module running on the processor may require the processing of data relating to the entity identified in the input data. The lookup database service can store the relevant data for each entity that can be identified in input data.
Accordingly, the processor can read the relevant information for an entity identified in a particular input of data from the shared database service and then proceed to process the relevant information. The identification information for a particular data input is transmitted to the database service as a "request" and the relevant information corresponding to the identification information of the request is returned to the processor as a corresponding "response".
In any scheme for transferring requests and responses between two devices, it is necessary to interlock the devices so as to make certain that each request is property identified to the responding device as a valid request. In addition, each response must be identified to the requesting device as a valid response. The validity of each request and its corresponding response is typically indicated in "ownership" information associated with each request, response pair.
When the ownership information indicates that the responding device "owns" a request, this represents a request written by a requesting device and yet to be processed for a response. Thus, the responding device will know that the request is to be used for lookup of a corresponding response. When the ownership information indicates that a response is owned by the requesting device, this represents a response returned by the responding device in respect of the corresponding request. Accordingly, the requesting device will know that the response should be used in the processing of the input data relating to that request. In this manner, requests and responses can be efficiently transferred between two devices without redundant processing of requests and with a positive indication of correspondence between each response and its respective request.
In known systems, a request/response memory is used as a central storage area for all requests and responses. The requesting device writes each request into an appropriate location in the request/response memory and the responding device polls the request/response memory for requests to process.
An interlock between the requesting and responding devices typically comprises a separate memory space used to store the ownership information relating to the request, response pairs. The requesting device must write the ownership information for each request in a preselected location of the ownership information memory space after it writes the respective request, to indicate that the request is valid for processing. During a polling operation, the responding device reads each request from its location in the request/response memory and also reads the ownership information for that request from the preselected location of the separate ownership information memory space to verify that the respective request is valid for processing.
When the responding device returns a response to the request/response memory, it must also write the appropriate ownership information in the separate ownership information memory location for the request, response pair so that the requesting device is provided with a positive indication that the response is valid for use in the processing of the input data relating to the respective request.
As should be understood, the known interlock scheme described above requires a total of eight read/write operations to complete a request/response transfer between two devices. The requesting device must write the request into the request/response memory and also write the corresponding ownership information into the ownership information memory space. The responding device must read each request from the request/response memory, read the corresponding ownership information from the ownership information memory space, write the corresponding response into the request/response memory and write the response ownership information into the ownership information memory space. Finally, the requesting device must read the response from the request/response memory and read the response ownership information from the ownership information memory space.
When the computer system is implemented as a bus based system with, for example, a plurality of requesting device coupled over the bus to each of the request/response memory and the ownership information memory space, each of the four read/write operations perfomed by each requesting device during a request/response transfer may require a bus transaction for completion of the information transfer. This can result in an inordinate amount of bus traffic and an unacceptable level of inefficiency in system operation, particularly in systems that perform a large amount of data recessing involving request/response transfers.